<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>2.模拟一个数据代理</title>
    </head>
    <body>
        <script type="text/javascript" >
            let vm = {}
            vm.$attrs = {}
            vm.$children = []
            vm._c = function(){}

            vm._data = {}

            // 要求：捕获到_data中a的修改，一旦出现修改，就去更新页面。—— 数据劫持。
            Object.defineProperty(vm._data,'a',{
                get:function reactiveGetter(){
                    return 1
                },
                set:function reactiveSetter(val){
                    console.log('大哥,a被修改了，我要把模板中用到a的地方，进行更新')
                }
            })

            // 数据代理
            Object.defineProperty(vm,'a',{
                get:function proxyGetter(){
                    return vm._data.a
                },
                set:function proxySetter(value){
                    vm._data.a = value
                }
            })

        </script>
    </body>
</html>